package Exams.Unity;

public class q2 {
    /*
    atoi的原题
    leetcode第8题
     */
    public int myAtoi(String s) {
        long bin, res = 0;
        boolean flag = true;
        int i = 0;
        for (; i < s.length(); i++) {

            if (s.charAt(i) == ' ') {
                continue;
            }
            if (s.charAt(i) == '-') {
                flag = false;
                i++;
                break;
            } else if (s.charAt(i) == '+') {
                i++;
                break;
            } else if (!Character.isDigit(s.charAt(i))) {
                return 0;
            } else {
                break;
            }

        }
        int j = i;
        int zeroCount = 0;
        for (; j < s.length(); j++) {

            if (!Character.isDigit(s.charAt(j))) {
                break;
            }
            res = res * 10;
            bin = Integer.parseInt(String.valueOf(s.charAt(j)));
            if (bin == 0) {
                zeroCount++;
            }
            res += bin;

            if ((int) res != res) {
                if (flag) {
                    return (int) (Math.pow(2, 32) - 1);
                } else {
                    return (int) (0 - Math.pow(2, 32));
                }
            }
        }

        if (j - i - zeroCount > 10) {
            if (flag) {
                return (int) (Math.pow(2, 32) - 1);
            } else {
                return (int) (0 - Math.pow(2, 32));
            }
        }

        if (flag) {
            return ((int) res == res ? (int) res : (int) (Math.pow(2, 32) - 1));
        } else {
            System.out.println("not");
            return ((int) res == res ? -(int) res : (int) (0 - Math.pow(2, 32)));
        }

    }
}
